mar.ius
Goto Top

Drucker-Einstellungen Printserver-Lokal vergleichen

Hallo zusammen,

innerhalb eines Scripts versuche ich, die Druckereinstellungen zwischen auf einem RDS-Server lokal installierten Druckern mit denen auf dem Druckserver zu vergleichen.

Die Druckereinstellungen werden zuvor auf dem Printserver ausgelesen und lokal auf dem RDS-Server importiert.

(compare (Get-PrinterProperty -PrinterName "Drucker 123" | select *) (Get-PrinterProperty -ComputerName \\PRINTSERVER01 -PrinterName "Drucker 123" | select *))  


Ich erhalte jedoch folgende Fehlermeldung:

Compare-Object : Das Argument kann nicht an den Parameter "ReferenceObject" gebunden werden, da es NULL ist.  
In Zeile:1 Zeichen:9
+ compare (Get-PrinterProperty -PrinterName "Drucker 123 ...  
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Compare-Object], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.CompareObjectCommand

Hat jemand einen Tip, wie ich das anpassen kann? Bin in PowerShell leider nicht so firm.

Besten Dank!

Content-Key: 43868097779

Url: https://administrator.de/contentid/43868097779

Printed on: June 1, 2024 at 20:06 o'clock

Member: mayho33
mayho33 Sep 24, 2023 updated at 10:28:08 (UTC)
Goto Top
Zitat von @mar.ius:

Hallo zusammen,
Hi,

innerhalb eines Scripts versuche ich, die Druckereinstellungen zwischen auf einem RDS-Server lokal installierten Druckern mit denen auf dem Druckserver zu vergleichen.
OK!

Die Druckereinstellungen werden zuvor auf dem Printserver ausgelesen und lokal auf dem RDS-Server importiert.
...
Ich erhalte jedoch folgende Fehlermeldung:

Compare-Object : Das Argument kann nicht an den Parameter "ReferenceObject" gebunden werden, da es NULL ist.  
In Zeile:1 Zeichen:9
+ compare (Get-PrinterProperty -PrinterName "Drucker 123 ...  
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Compare-Object], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.CompareObjectCommand

Hat jemand einen Tip, wie ich das anpassen kann? Bin in PowerShell leider nicht so firm.

Na klar!
  • lerne dein Werkzeug kennen
  • lerne die Möglichkeiten deinses Werkzeugs kennen
  • analysiere die Fehler die dir dein Werkzeug liefert
Da steht ja eh schon alles: Zeile:1, Zeichen:9 ... kann nicht an den Parameter "ReferenceObject" gebunden werden, Bedeutet, dass eine Abfrage wohl nichts liefert das verglichen werden kann.
Compare-Object : Das Argument kann nicht an den Parameter "ReferenceObject" gebunden werden, da es NULL ist.    
In Zeile:1 Zeichen:9
+ compare (Get-PrinterProperty -PrinterName "Drucker 123 ...    
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Compare-Object], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.CompareObjectCommand

Stelle also zuerst mal sicher ob beide Abfragen wirklich etwas liefern:
$queryA = Get-PrinterProperty -PrinterName "Drucker 123" | select *  
$queryB = Get-PrinterProperty -ComputerName \\PRINTSERVER01 -PrinterName "Drucker 123" | select *  

Danach kannst du beide Objects miteinander vergleichen
if($queryA -ne $null -and $queryB -ne $null)
{
    Compare-Object $queryA $queryB
}

Kleiner Zusatz:
Z.B: liefert diese Abfrage mindestens ein weiteres Object-Array im Object. WEnn du die auch vergleichen willst, musst du dieses Object separat vergleichen:
Get-PrinterProperty -ComputerName "MeinPC" -PrinterName "Adobe PDF" | select *  

Type                  : String
Caption               : 
Description           : 
ElementName           : 
InstanceID            : 
ComputerName          : NUC
PrinterName           : Adobe PDF
PropertyName          : Config:InstalledMemory
Value                 : None
PSComputerName        : 
CimClass              : ROOT/StandardCimv2:MSFT_PrinterProperty
#besagtes Array:
CimInstanceProperties : {Caption, Description, ElementName, InstanceID...}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties